// pages/search.js
import { 
    handleCommodityChange, 
    getNewShoppingCarData, 
    setNewShoppingCarData,
    getOnCommodityNumberIsZero
} from '../../utils/commodityOpt';
const util = require('../../utils/util');
let page = null, app = getApp(),
globalData = app.globalData,
appGlobalData = JSON.parse(JSON.stringify(globalData));
appGlobalData.shareInfo.path = '/page/search/search';
let shareInfo = appGlobalData.shareInfo;
Page({
  /**
   * 页面的初始数据
   */
  data: {
    cdList:[],
    noDataIsShow: false, // 是否显示没数据提示
    searchKey:'',// 搜索的关键字
  },
  // 获取用户输入的内容
  getInputKey(e){
    const {cursor,value} = e.detail;
    if(cursor > 20){return}
    this.setSearchKey(value);
  },
  // 点击搜索
  tapSearch(){
    const v = this.data.searchKey;
    if(v.length === 0){
      this.setDatas({cdList:[],noDataIsShow:true});
      return util.toast('搜索内容为空哦~~~');
    }
    this.setDatas({ cdList:this.getTestData(), noDataIsShow:false });
    this.initCommodityPayNumber(this.data.cdList); // 初始化初始购买数量=>0
    this.updataCdListData(this.data.cdList);
    this.IsShowCart(this.data.cdList)
    util.toast('关键词为: '+v);
  },
  // 处理商品选购数量
  handlePayCommOdityNumber(cid, type){// type: 0=>删除 1=>添加 2=>清空
    const { cItemInfo } = this.getCommodityInfo(cid);
    const newCarList = getNewShoppingCarData(); // 获取全局管理状态里的最新购物车商品数据
    const carList = handleCommodityChange(newCarList, cItemInfo, type, void 0, true); // 操作购物车里的数据
    setNewShoppingCarData(carList); // 更新购物车数据
    const tempList = handleCommodityChange(this.data.cdList, cItemInfo, type, void 0);
    this.setData({ cdList: tempList });
  },
  // 处理当前页面的添加删除
  handleSelfAddOrReduce(cid, type){
    this.handlePayCommOdityNumber(cid, type);
  },
  // 点击商品主体
  handleTapComm(cid){
    const objs = this.getCommodityInfo(cid);
    this.commodityInfo.setCommodityInfo(objs.cItemInfo);
  },
  // 更新搜索到的商品的已选商品数量
  updataCdListData(cdList){
    const tempCdlist = getNewShoppingCarData(); // 获取全局购物车的数据
    for(let i=0;i<tempCdlist.length;i++){
      for(let x=0;x<cdList.length;x++){
        if(cdList[x].cid === tempCdlist[i].cid){
          cdList[x].payNumber = tempCdlist[i].payNumber;
        }
      }
      this.setDatas({cdList: cdList});
    }
  },
  // 清空搜索关键词内容
  clearSearchKey(){
    this.setSearchKey('');
  },
  // 设置key（关键词）
  setSearchKey(key){
    this.setDatas({searchKey:key});
  },
  // 公共setData
  setDatas(obj){
    this.setData(obj);
  },
  // 获取搜索结果的某个商品
  getCommodityInfo(cid){
    const cInfo = JSON.parse(JSON.stringify(this.data.cdList));
    const cItemInfo = cInfo.find(it => it.cid === cid);
    return { cItemInfo };
  },
  // 初始化数量
  initCommodityPayNumber(clist){
    let cInfo = clist;
    for(var i in cInfo){
      const cdItem = cInfo[i];
      cdItem.payNumber = 0;
    }
    this.setData({commodityInfo:cInfo})
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    let pages = getCurrentPages();// 上一个页面
    if(pages.length >= 2) {// 是否存在上一个页面
      page = pages[pages.length - 2];
    }
  },
  // 是否显示购物车组件
  IsShowCart(cList){
    const cartList = getNewShoppingCarData()
    if (Array.isArray(cList) && cList.length > 0 && cartList.length > 0) {
      this.spCart.showCart(); // 显示购物车
    }
  },
  // 判断隐藏购物车
  verifyHideCart() {
    // 隐藏购物车
    if (getOnCommodityNumberIsZero()) {
      return this.spCart && this.spCart.hideCart()
    }
  },
  // 商品组件方法回调函数
  commitemEvent(e){
    const {cid,type} = e.detail;
    switch(type){
      case 0: // 减少
        this.handleSelfAddOrReduce(cid, 0);// 当前页面减少
        break;
      case 1: // 增加
        this.handleSelfAddOrReduce(cid, 1);// 当前页面添加
        break;
      default: // 点击商品主体
        this.handleTapComm(cid);
        break
    }
    this.verifyHideCart()
  },
  // 购物车商品变动回调函数
  quantityChange(o){
    console.log('搜索页面触发-购物车商品变动回调函数: ', o)
    const type = o.detail.type;
    if(type == 0 || type==1) {
      const cid = o.detail.cid, { cItemInfo } = this.getCommodityInfo(cid);
      const cdList = handleCommodityChange(this.data.cdList, cItemInfo, type, void 0);
      return this.setData({ cdList: cdList }); // 更新商品列表
    } else if (type === 3) { // 清空
      this.clearAllCommodityNumber(this.data.cdList); // 本页已选择商品数量清空
    }
    // this.clearAllCommodityNumber(this.data.cdList); // 本页已选择商品数量清空
    // page.handleClear();// 上一页（购物车）已选择商品数量清空
  },
  // 单个商品变动
  // settingCommodityNumber(e){
  //   const {cid, payNumber} = e.detail;
  //   this.handleCommodityChange(cid,payNumber); // 更改下单页商品数量
  //   const objs = this.getCommodityInfo(cid); // 拿到该商品信息
  //   this.setCartCommodityData(objs.cItemInfo, 2); // 更改指定数量
  // },
  // setCartCommodityData(cItem, type) {
  //   const newCarList = getNewShoppingCarData(); // 获取全局管理状态里的最新购物车商品数据
  //   const cList = handleCommodityChange(newCarList, cItem, type, cItem.payNumber); // 处理变动商品
  //   setNewShoppingCarData(cList); // 更新购物车数据
  // },
  // 处理商品数量信息变动
  // handleCommodityChange(cid, number){
  //   let cdList = this.data.cdList, isChange = false;
  //   for(let i in cdList){
  //     let cdItem = cdList[i];
  //     if(cdItem.cid == cid){
  //       cdItem.payNumber = number;
  //       isChange = true;
  //       break;
  //     }
  //   }
  //   if(!isChange){return}
  //   this.setData({cdList: cdList});
  // },
  // 分享信息设置
  settingShareInfo(e){
    let {pObj,type} = e.detail;
    if(type == 0){ // 还原分享设置
      return shareInfo = pObj;
    }
    this.commodityInfo.backupsShareInfos(shareInfo); // 备份
    shareInfo = pObj;
  },
  // 清空
  clearAllCommodityNumber(list){
    let cInfoList = list;
    for(let i in cInfoList){
      if(cInfoList[i].payNumber != 0){
        cInfoList[i].payNumber = 0;
      }
    }
    this.setData({ cdList: cInfoList }); // 清空已选择商品数操作
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    this.commodityInfo = this.selectComponent('#commodityInfo');
    this.spCart = this.selectComponent('#spCart');
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // // 上一页已选商品信息
    // if(!page){return}
    // // const cList = page.getCommoditySelectList();
    // setTimeout(()=>{
    //   // this.handlecList(cList);
    // },500);
  },
  getTestData(){
    const cdList=[
      {cid:1000,cName:'优惠辣条1',remain:100,dt:0,price:1.00,oPrice:1.00,imageUrl:'../../images/1.jpg'},// remain => 剩余
      {cid:1001,cName:'优惠辣条2',remain:100,dt:8.81,price:1.00,oPrice:2.00,imageUrl:'../../images/2.jpg'},
      {cid:1002,cName:'优惠辣条3',remain:100,dt:1.5,price:1.00,oPrice:1.8,imageUrl:'../../images/1.jpg'},
      {cid:1003,cName:'优惠辣条4',remain:100,dt:0,price:1.00,oPrice:1.00,imageUrl:'../../images/2.jpg'},
      {cid:1004,cName:'优惠辣条5',remain:100,dt:3.31,price:1.00,oPrice:10.00,imageUrl:'../../images/1.jpg'},
      {cid:1005,cName:'优惠辣条7',remain:100,dt:3.21,price:1.00,oPrice:10.00,imageUrl:'../../images/1.jpg'},
      {cid:1006,cName:'优惠辣条8',remain:100,dt:3.61,price:1.00,oPrice:10.00,imageUrl:'../../images/1.jpg'},
    ]
    return cdList;
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    page && page.updateCommodityListData() // 更新上个页面的选购数据
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    wx.showShareMenu({
       withShareTicket: true,
       menus: [ 'shareTimeline']
    });
    return shareInfo;
  }
})